#!/usr/bin/env python3
#-*- coding:utf-8 -*-
import os
import shutil

PACKRB=os.path.normpath("F:/cq/fgcq/client/tools/animate/role/pack.rb")
RUBYEXE=os.path.normpath("C:/Ruby200-x64/bin/ruby.exe")

def copy_file_to_directory(src_file, dst_directory):
    # 使用 shutil.copy() 函数将文件拷贝到目标目录中
    shutil.copy(src_file, dst_directory)
    print(f"文件 {src_file} 已成功拷贝到目录 {dst_directory} 中。")



#判断当前目录是否有RB文件
def find_rb_files(directory):
    if not os.path.isdir(directory):
        return
    # 使用列表推导式查找目录中所有的 .rb 文件
    rb_files = [file for file in os.listdir(directory) if file.endswith(".rb")]

    if rb_files:
        print(f"在目录 {directory} 中找到以下 .rb 文件:")
        for rb_file in rb_files:
            rbfile = os.path.join(directory, "pack.rb")
            cmd_exec = RUBYEXE + "  " + rbfile
            print(f"执行命令=> {cmd_exec}")
            os.system(cmd_exec)
    else:
        print(f"在目录 {directory} 中未找到任何 .rb 文件。")
        copy_file_to_directory(PACKRB, directory)
        rbfile = os.path.join(directory, "pack.rb")
        cmd_exec = RUBYEXE + "  " + rbfile
        print(f"执行命令=> {cmd_exec}")
        os.system(cmd_exec)


#判断当前目录是否含有子目录
def has_subdirectories(directory):
    if not os.path.isdir(directory):
        return False
    # 列出目录中的所有文件和子目录
    items = os.listdir(directory)
    # 检查是否有子目录
    for item in items:
        item_path = os.path.join(directory, item)
        if os.path.isdir(item_path):
            return True  # 如果有子目录，返回 True
    return False  # 如果没有子目录，返回 False

def Main():
    ArgOfFilePath=__import__("sys").argv[1]
    FileName=__import__("os").path.basename(ArgOfFilePath)
    print("路径1",ArgOfFilePath)
    print("路径2",FileName)

    if os.path.isfile(ArgOfFilePath):
        dir = os.path.dirname(ArgOfFilePath)
        find_rb_files(dir)
    else:
        #遍历目录
        if has_subdirectories(ArgOfFilePath):
            list_dirs = os.listdir(ArgOfFilePath) 
            for dir in list_dirs:
                dir_path = os.path.join(ArgOfFilePath, dir)
                if os.path.isdir(dir_path):
                    find_rb_files(dir_path)
        else:
            find_rb_files(ArgOfFilePath)
           


Main()
